<head>

<style>

body, table { font-family: "Lucida Grande"; font-size: 10px }

</style>

<script>

if (window.testRunner)
    testRunner.dumpAsText();

function labelRows()
{
    rows = document.getElementsByTagName("tr");
    for (i = 0; i < rows.length; ++i)
        rows[i].innerHTML += "<td>" + rows[i].id + "</td><td>rowIndex = " + rows[i].rowIndex + "</td>"
}

</script>

</head>

<body onload="labelRows()">

<p>This tests rowIndex, in particular in cases where the table sections are in different orders.</p>

<p>A: This table has the header and footer before the body ("normal" order).</p>

<table border=1>
    <thead><tr id="table A, header"></tr></thead>
    <tfoot><tr id="table A, footer"></tr></tfoot>
    <tbody><tr id="table A, body"></tr></tbody>
</table>

<p>B: This table has the footer before the body and both before the header.</p>

<table border=1>
    <tfoot><tr id="table B, footer"></tr></tfoot>
    <tbody><tr id="table B, body"></tr></tbody>
    <thead><tr id="table B, header"></tr></thead>
</table>

<p>C: This table has two footers before two bodies before two heads.</p>

<table border=1>
    <tfoot><tr id="table C, footer A row A"></tr><tr id="table C, footer A row B"></tr></tfoot>
    <tfoot><tr id="table C, footer B row A"></tr><tr id="table C, footer B row B"></tr></tfoot>
    <tbody><tr id="table C, body A row A"></tr><tr id="table C, body A row B"></tr></tfoot>
    <tbody><tr id="table C, body B row A"></tr><tr id="table C, body B row B"></tr></tfoot>
    <thead><tr id="table C, header A row A"></tr><tr id="table C, header A row B"></tr></tfoot>
    <thead><tr id="table C, header B row A"></tr><tr id="table C, header B row B"></tr></tfoot>
</table>

<p>D: This table has a head, foot, body, direct row children, and an extra foot.</p>

<table border=1>
    <tfoot><tr id="table D, footer row A"></tr><tr id="table D, footer row B"></tr></tfoot>
    <tbody><tr id="table D, body row A"></tr><tr id="table D, body row B"></tr></tfoot>
    <tr id="table D, direct row A"></tr>
    <thead><tr id="table D, header A row A"></tr><tr id="table D, header A row B"></tr></tfoot>
    <tfoot><tr id="table D, footer B row A"></tr><tr id="table D, footer B row B"></tr></tfoot>
</table>

<script>
var tr = document.createElement("tr");
tr.id = "table D, direct row B";
document.currentScript.previousElementSibling.appendChild(tr);
</script>

<p>E: This table only has a direct row child, added dynamically.</p>

<table border=1>
</table>

<script>
var tr = document.createElement("tr");
tr.id = "table E, direct row A";
document.currentScript.previousElementSibling.appendChild(tr);
</script>

</body>
